home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 2002 #12 / Amiga Plus CD - 2002 - No. 12.iso / Tools / Development / source-highlight-1.6.1 / tests / test.pl < prev    next >
Text File  |  2002-11-17  |  766b  |  26 lines

  1. %      +------------------------------+
  2. %      |   test for Prolog source     |
  3. %      |______________________________|
  4.  
  5. isinteger(X, L) :- type(X, int, L).
  6.  
  7. % booleans
  8. type(true, bool, _).
  9. type(false, bool, _).
  10.  
  11. type( and(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
  12. type( or(X,Y), bool, L) :- isboolean(X,L), isboolean(Y,L).
  13. type( not(X), bool, L) :- isboolean(X,L).
  14.  
  15. type( succ(X), int, L ) :- isinteger(X,L).
  16. type( pred(X), int, L ) :- isinteger(X,L).
  17. type( iszero(X), bool, L ) :- isinteger(X,L).
  18. type( X < Y, bool, L ) :- isinteger(X,L), isinteger(Y,L).
  19.  
  20. % is_member(X,L) check whether X is in the list
  21. % by using unification with occur check
  22.  
  23. is_member(_, []) :- fail.
  24. is_member(X, [Y | _]) :- unify(X,Y).
  25. is_member(X, [_ | List]) :- is_member(X, List).
  26.